home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / SNNSV32.ZIP / SNNSv3.2 / xgui / sources / d3_links.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-25  |  8.8 KB  |  335 lines

  1. /*****************************************************************************
  2.   FILE           : d3_links.c
  3.   SHORTNAME      : links.c
  4.   SNNS VERSION   : 3.2
  5.  
  6.   PURPOSE        : controls the link pannel
  7.   NOTES          :
  8.  
  9.   AUTHOR         : Ralf Huebner 
  10.   DATE           : 1.12.1991
  11.  
  12.   CHANGED BY     : Sven Doering
  13.   IDENTIFICATION : @(#)d3_links.c    1.9 3/2/94
  14.   SCCS VERSION   : 1.9
  15.   LAST CHANGE    : 3/2/94
  16.  
  17.              Copyright (c) 1990-1994  SNNS Group, IPVR, Univ. Stuttgart, FRG
  18.  
  19. ******************************************************************************/
  20. #include <stdio.h>
  21. #include <memory.h>
  22.  
  23. #include <X11/Xlib.h>
  24. #include <X11/Xutil.h>
  25. #include <X11/Intrinsic.h>
  26. #include <X11/StringDefs.h>
  27. #include <X11/Shell.h>
  28. #include <X11/Xaw/Simple.h>
  29. #include <X11/Xaw/Box.h>
  30. #include <X11/Xaw/Form.h>
  31. #include <X11/Xaw/Toggle.h>
  32. #include "glob_typ.h"
  33. #include "ui.h"
  34. #include "ui_xWidgets.h"
  35. #include "d3_global.h"
  36. #include "d3_xUtils.h"
  37. #include "d3_fonts.h"
  38. #include "d3_main.h"
  39. #include "d3_links.ph"
  40.  
  41.  
  42.  
  43.  
  44. /*****************************************************************************
  45.   FUNCTION : setLinkToggleState
  46.  
  47.   PURPOSE  : sets the toggles in the link pannel
  48.   RETURNS  : 
  49.   NOTES    :
  50.  
  51. ******************************************************************************/
  52.  
  53.  
  54. static void setLinkToggleState (void)
  55. {
  56.     Boolean onFlag, offFlag, labelFlag, colorFlag;
  57.  
  58.     onFlag = offFlag = colorFlag = labelFlag = FALSE;
  59.     switch (temp_state.link_mode) {
  60.         case links_off   : offFlag = TRUE;
  61.                            break;
  62.         case links_on    : onFlag = TRUE;
  63.                            break;
  64.         case links_label : labelFlag = TRUE;
  65.                            break;
  66.         case links_color : colorFlag = TRUE;
  67.                            break;
  68.     }
  69.     ui_xSetToggleState (linksOnButton, onFlag);    
  70.     ui_xSetToggleState (linksOffButton, offFlag);    
  71.     ui_xSetToggleState (linksColorButton, colorFlag);    
  72.     ui_xSetToggleState (linksLabelButton, labelFlag);    
  73.  
  74. }
  75.  
  76.  
  77. /*****************************************************************************
  78.   FUNCTION : setLinksOn
  79.  
  80.   PURPOSE  : sets mode to draw links
  81.   RETURNS  : 
  82.   NOTES    :
  83.  
  84. ******************************************************************************/
  85.  
  86.  
  87. static void setLinksOn (void)
  88. {
  89.     temp_state.link_mode = links_on;
  90.     setLinkToggleState (); 
  91. }
  92.  
  93.  
  94.  
  95.  
  96.  
  97. /*****************************************************************************
  98.   FUNCTION : setLinksOff
  99.  
  100.   PURPOSE  : sets mode not to draw links
  101.   RETURNS  : 
  102.   NOTES    :
  103.  
  104. ******************************************************************************/
  105.  
  106.  
  107. static void setLinksOff (void)
  108. {
  109.     temp_state.link_mode = links_off;
  110.     setLinkToggleState ();
  111. }
  112.  
  113.  
  114.  
  115.  
  116.  
  117. /*****************************************************************************
  118.   FUNCTION : setLinksColor 
  119.  
  120.   PURPOSE  : set mode to show the weight by color
  121.   RETURNS  : 
  122.   NOTES    :
  123.  
  124. ******************************************************************************/
  125.  
  126.  
  127. static void setLinksColor (void)
  128. {
  129.     if (temp_state.color_mode != rgb_mode) {
  130.         ui_xSetToggleState (linksColorButton, FALSE);    
  131.         return;
  132.     }
  133.     temp_state.link_mode = links_color;
  134.     setLinkToggleState ();
  135. }
  136.  
  137.  
  138.  
  139. /*****************************************************************************
  140.   FUNCTION : setLinksLabel 
  141.  
  142.   PURPOSE  : set mode to show the weight by label
  143.   RETURNS  : 
  144.   NOTES    :
  145.  
  146. ******************************************************************************/
  147.  
  148.  
  149. static void setLinksLabel (void)
  150. {
  151.     temp_state.link_mode = links_label;
  152.     setLinkToggleState ();
  153. }
  154.  
  155.  
  156.  
  157.  
  158. /*****************************************************************************
  159.   FUNCTION : d3_closeLinkPannel
  160.  
  161.   PURPOSE  : close the link pannel
  162.   RETURNS  : 
  163.   NOTES    :
  164.  
  165. ******************************************************************************/
  166.  
  167.  
  168. static void d3_closeLinkPannel (Widget w, Widget pannel, caddr_t call_data)
  169. {
  170.     XtDestroyWidget (pannel);
  171.     if (memcmp (&d3_state, &temp_state, 
  172.                 sizeof (d3_state_type)) != 0) {
  173.          memcpy (&d3_state, &temp_state, 
  174.                  sizeof (d3_state_type)); 
  175.          d3_drawNet ();
  176.     }
  177. }
  178.  
  179.  
  180.  
  181.  
  182.  
  183. /*****************************************************************************
  184.   FUNCTION : setFontToggleState
  185.  
  186.   PURPOSE  : sets the link toggles
  187.   RETURNS  : 
  188.   NOTES    :
  189.  
  190. ******************************************************************************/
  191.  
  192.  
  193. static void setFontToggleState (void)
  194. {
  195.     switch (temp_state.font)
  196.       {
  197.         case fnt5x8  : ui_xSetToggleState (fontSmallButton, TRUE);
  198.                        ui_xSetToggleState (fontBigButton, FALSE);
  199.                        break;
  200.         case fnt8x14 : ui_xSetToggleState (fontSmallButton, FALSE);
  201.                        ui_xSetToggleState (fontBigButton, TRUE);
  202.                        break;
  203.       }
  204. }
  205.  
  206.  
  207.  
  208.  
  209. /*****************************************************************************
  210.   FUNCTION : setFontSmall
  211.  
  212.   PURPOSE  : activates the small font
  213.   RETURNS  : 
  214.   NOTES    :
  215.  
  216. ******************************************************************************/
  217.  
  218.  
  219. static void setFontSmall (void)
  220. {
  221.     temp_state.font = fnt5x8;
  222.     d3_select_font (fnt5x8);
  223.     d3_get_font_size (&d3_fontXsize, &d3_fontYsize);
  224.     setFontToggleState (); 
  225. }
  226.  
  227.  
  228.  
  229. /*****************************************************************************
  230.   FUNCTION : setFontBig
  231.  
  232.   PURPOSE  : activates the large font
  233.   RETURNS  : 
  234.   NOTES    :
  235.  
  236. ******************************************************************************/
  237.  
  238.  
  239. static void setFontBig (void)
  240. {
  241.     temp_state.font = fnt8x14;
  242.     d3_select_font (fnt8x14);
  243.     d3_get_font_size (&d3_fontXsize, &d3_fontYsize);
  244.     setFontToggleState (); 
  245. }
  246.  
  247.  
  248.  
  249.  
  250. /*****************************************************************************
  251.   FUNCTION : d3_createLinkPannel
  252.  
  253.   PURPOSE  : creates the link pannel
  254.   RETURNS  : 
  255.   NOTES    :
  256.  
  257. ******************************************************************************/
  258.  
  259.  
  260.  
  261. void d3_createLinkPannel (Widget w, Widget button, caddr_t call_data)
  262. {
  263.     int n;
  264.     Arg arg[10];
  265.     Position xPos, yPos;
  266.     Dimension width, height;
  267.     Widget linkPannel, border, pannel, doneButton, linkLabel, fontLabel, dummy;
  268.  
  269.  
  270.     n = 0;
  271.     XtSetArg (arg[n], XtNwidth, &width);   n++;
  272.     XtSetArg (arg[n], XtNheight, &height); n++;
  273.     XtGetValues (button, arg, (unsigned int) n);
  274.     XtTranslateCoords (button, (Position) (width / 2), (Position) (height / 2), 
  275.                        &xPos, &yPos);
  276.  
  277.     n = 0;
  278.     XtSetArg(arg[n], XtNx, xPos); n++;
  279.     XtSetArg(arg[n], XtNy, yPos); n++;
  280.     linkPannel = XtCreatePopupShell ("links", transientShellWidgetClass, 
  281.                                       button, arg, (unsigned int) n);
  282.  
  283.     border = XtCreateManagedWidget("border", boxWidgetClass, 
  284.                                    linkPannel, NULL, ZERO);
  285.     pannel = XtCreateManagedWidget("pannel", formWidgetClass, 
  286.                                     border, NULL, ZERO);
  287.  
  288.     linkLabel = ui_xCreateLabelItem ("  links", pannel,
  289.                                      7 * d3_fontWidth, NULL, NULL);
  290.     linksOffButton = d3_xCreateToggleItem ("off", pannel, NULL, NULL, linkLabel);
  291.     linksOnButton = d3_xCreateToggleItem ("on", pannel, NULL, 
  292.                                      linksOffButton, linkLabel);
  293.     linksColorButton = d3_xCreateToggleItem ("color2", pannel, NULL, 
  294.                                      NULL, linksOffButton);
  295.     linksLabelButton = d3_xCreateToggleItem ("label", pannel, NULL, 
  296.                                      NULL, linksColorButton);
  297.     dummy = ui_xCreateLabelItem (" ", pannel,
  298.                                      d3_fontWidth, NULL, linksLabelButton);
  299.  
  300.     fontLabel = ui_xCreateLabelItem ("  fonts", pannel,
  301.                                      7 * d3_fontWidth, NULL, dummy);
  302.     fontSmallButton = d3_xCreateToggleItem ("small", pannel, NULL, 
  303.                                       NULL, fontLabel);
  304.     fontBigButton = d3_xCreateToggleItem ("big", pannel, NULL, 
  305.                                      fontSmallButton, fontLabel);
  306.  
  307.     doneButton = d3_xCreateButtonItem ("done", border, NULL, NULL);
  308.  
  309.  
  310.     XtAddCallback (linksOffButton, XtNcallback, (XtCallbackProc) setLinksOff, NULL);
  311.     XtAddCallback (linksOnButton, XtNcallback, (XtCallbackProc) setLinksOn, NULL);
  312.     XtAddCallback (linksLabelButton, XtNcallback, (XtCallbackProc) setLinksLabel, NULL);
  313.     XtAddCallback (linksColorButton, XtNcallback, (XtCallbackProc) setLinksColor, NULL);
  314.  
  315.     XtAddCallback (fontSmallButton, XtNcallback, (XtCallbackProc) setFontSmall, NULL);
  316.     XtAddCallback (fontBigButton, XtNcallback, (XtCallbackProc) setFontBig, NULL);
  317.  
  318.     XtAddCallback (doneButton, XtNcallback, (XtCallbackProc) d3_closeLinkPannel, 
  319.                    (Widget) linkPannel);
  320.  
  321.     memcpy (&temp_state, &d3_state, sizeof (d3_state_type)); 
  322.  
  323.     setLinkToggleState ();
  324.     setFontToggleState ();
  325.  
  326.     ui_checkWindowPosition(linkPannel);
  327.     XtPopup (linkPannel, XtGrabExclusive);
  328.  
  329. }
  330.  
  331.  
  332.  
  333. /* end of file */
  334. /* lines: 359 */
  335.